package utils

import (
	"image"
	"image/png"
	"os"
	"path/filepath"
	"time"
)

// SaveImageToDirectory 将图像保存到指定目录，并在 30 秒后定时删除该文件
func SaveImageToDirectory(img image.Image, dir, filename string) (string, error) {
	// 确保目录存在
	if err := os.MkdirAll(dir, 0755); err != nil {
		return "", err
	}

	// 构建完整的文件路径
	filePath := filepath.Join(dir, filename)

	// 创建文件
	file, err := os.Create(filePath)
	if err != nil {
		return "", err
	}
	defer file.Close()

	// 将图像编码为 PNG 格式并写入文件
	err = png.Encode(file, img)
	if err != nil {
		return "", err
	}

	// 定时 30 秒后删除文件
	time.AfterFunc(30*time.Second, func() {
		if err := os.Remove(filePath); err != nil {
			// 这里可以根据实际情况添加日志记录等操作
			// 例如使用 log 包记录错误信息
			// log.Printf("Failed to delete file %s: %v", filePath, err)
		}
	})

	// 返回相对路径
	return filename, nil
}
